package com.hbnu.system.model.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hbnu.system.config.PostDeserializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("art")
public class ArtDTO implements Serializable {


    /**
     * 艺术作品编号
     */
    @ApiModelProperty(value="艺术作品编号")
    @TableId(value = "ArtID",type = IdType.ASSIGN_ID)
    private String ArtID;

    /**
     * 统计分类
     */
    @ApiModelProperty(value="统计分类")
    @TableField(value="classifi")
    private String classifi;

    /**
     * 所属机构
     */
    @ApiModelProperty(value="所属机构")
    @TableField(value="organization")
    private String organization;

    /**
     * 作品名称
     */
    @ApiModelProperty(value="作品名称")
    @TableField(value="artName")
    private String artName;

    /**
     * 第一作者
     */
    @ApiModelProperty(value="第一作者")
    @TableField(value="leadAuthor")
    private String leadAuthor;

    /**
     * 出版日期
     */
    @ApiModelProperty(value="出版日期")
    @TableField(value="publicDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate publicDate;

    /**
     * 作品类型
     */
    @ApiModelProperty(value="作品类型")
    @TableField(value="artType")
    private String artType;

    /**
     * 作品获奖类别
     */
    @ApiModelProperty(value="作品获奖类别")
    @TableField(value="artRewardCate")
    private String artRewardCate;

    /**
     * 作品获奖等级
     */
    @ApiModelProperty(value="作品获奖等级")
    @TableField(value="artRewardLevel")
    private String artRewardLevel;

    /**
     * 作品来源
     */
    @ApiModelProperty(value="作品来源")
    @TableField(value="artOrigin")
    private String artOrigin;

    /**
     * 研究类别
     */
    @ApiModelProperty(value="研究类别")
    @TableField(value="researchCate")
    private String researchCate;

    /**
     * 一级学科
     */
    @ApiModelProperty(value="一级学科")
    @TableField(value="firstDiscipline")
    private String firstDiscipline;

    /**
     * 二级学科
     */
    @ApiModelProperty(value="二级学科")
    @TableField(value="secondaryDiscipline")
    private String secondaryDiscipline;

    /**
     * 附件
     */
    @ApiModelProperty(value="附件")
    @JsonDeserialize(using = PostDeserializer.class)
    private byte[] annex;
    /**
     * 通讯作者
     */
    @ApiModelProperty(value = "通讯作者")
    @TableField("correspondingAuthor")
    private String correspondingAuthor;
    /**
     * 备注
     */
    @ApiModelProperty(value="备注")
    @TableField(value="notes")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value="录入人")
    @TableField(value="entered")
    private String entered;

    /**
     * 录入人
     */
    @ApiModelProperty(value="录入人名称")
    private String enteredName;

    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @TableField("enteredDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime enteredDate;

    /**
     * 所有作者
     */
    @ApiModelProperty(value="所有作者")
    @TableField(value="allAuthor")
    private String allAuthor;

    /**
     * 所有作者
     */
    @ApiModelProperty(value="所有作者名称")
    private String allAuthorName;

    /**
     * 审核结果
     */
    @ApiModelProperty(value="审核结果")
    @TableField(value="status")
    private String status;

    /**
     * 院系
     */
    @ApiModelProperty(value="院系")
    @TableField(value="dept")
    private String dept;

    /**
     * 院系
     */
    @ApiModelProperty(value="院系名称")
    private String deptName;

    /**
     * 未通过原因
     */
    @ApiModelProperty(value="未通过原因")
    @TableField(value="reason")
    private String reason;

    /**
     * 考核分数
     */
    @ApiModelProperty(value="考核分数")
    @TableField(value="score")
    private float score;
}
